package com.seuic.hnjiningposapp.hnapps.util;


import com.seuic.posdsdk.pos_func.PosFuncs;

/**
 * 用户初始化密码键盘密钥区
 * 初始化密码键盘的密钥明文为11111111111111111111111111111111
 */
public class PinPad {
    public static final String KEY = "11111111111111111111111111111111";
    public static final String KEY_ENC = "F40379AB9E0EC533F40379AB9E0EC533";

    /**
     * 初始化密码键盘，一般开机后调用一次即可。
     * 但是如果为了防止密码密钥被覆盖，可每次调用输密码前调用一次。具体看情况
     *
     * @param posFuncs
     */
    public static void initPinPad(PosFuncs posFuncs) {
        if (0 != posFuncs.downloadProtectKey(KEY)) {
            return;
        }

        if (0 != posFuncs.downloadMainKey(KEY_ENC, "")) {
            return;
        }
        if (0 != posFuncs.downloadWorkKeys(KEY_ENC, "",
                KEY_ENC, "",
                KEY_ENC, "")) {
            return;
        }
    }
    /**
     * 通过密文取得明文密码
     * @param card 卡号
     * @param pinEnc 密码密文
     * @return
     */
    public static String getPin(String card, String pinEnc) throws Exception {
        String tempPin = ThreeDESUtils.decryptDes(KEY,pinEnc);
        System.out.println("tempPin:" + tempPin);
        int len = card.length();
        String encBin = "0000" + card.substring(len-1-12,len-1);
        System.out.println("encBin:" + encBin);
        tempPin = Utils.xor(encBin,tempPin);
        System.out.println("tempPin:"+tempPin);
        len = Integer.parseInt(tempPin.substring(0,2));
        String pin = tempPin.substring(2,len+2);
        System.out.println("pin:"+pin);
        return pin;

    }


}
